using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using GrrrControls;
using SAGE.Agent;
using SAGE.Utilities;

namespace SAGE
{
  public class World
  {
    #region Members

    private GrrrBoundingBox _boundingBox;
    private List<IAgent> _agents;
    private Physics _physics;

    #endregion

    #region Properties

    public GrrrBoundingBox BoundingBox
    {
      get { return _boundingBox; }
    }

    public List<IAgent> Agents
    {
      get { return _agents; }
      set { _agents = value; }
    }

    public Physics Physics
    {
      get { return _physics; }
      set { _physics = value; }
    }

    #endregion

    #region Constructor

    public World()
    {
      Initialize();
      _agents.Add(new CircleAgent(new Point3D(100, 100, 100), 20, Color.Red));
      Simulation.Initialize(this);
      Simulation.Start();
    }

    #endregion Constructor

    #region Private Members

    private void Initialize()
    {
      _boundingBox = new GrrrBoundingBox(-300, 300, -300, 300, -300, 300);
      _agents = new List<IAgent>();
      _physics = new Physics(this);
    }

    #endregion
  }
}
